// 数据表格配置
import storage from '@/utils/storage'

export default {
    // 请求状态码
    successStatus: true,
    // 请求完成代码
    successCode: 0,
    // 表格每一页条数
    pageSize: 10,
    // 表格可设置的一页条数
    pageSizeList: [10, 20, 30, 40, 50],
    // 表格分页布局，可设置"total, sizes, prev, pager, next, jumper"
    paginationLayout: "total, sizes, prev, pager, next, jumper",
    
    // 数据分析
    parseData: function (res) {
        return {
            // 返回值状态
            status: res.status,
            // 返回值编码
            code: res.code,
            // 返回值描述
            msg: res.message,
            // 无分页时返回值列表
            data: res.data.list,
            // 有分页时返回值列表
            rows: res.data.list,
            // 分页时返回值总数
            total: res.data.total,
            // 分析合计行字段结构
            summary: res.data.summary,
        }
    },

    // 请求规定字段
    request: {
        // 规定当前分页字段
        page: 'pageNum',
        // 规定一页条数字段
        pageSize: 'pageSize',
        // 规定排序字段名字段
        prop: 'prop',
        // 规定排序规格字段
        order: 'order'
    },

    /**
     * 自定义列保存处理
     * @tableName jcxTable组件的props->tableName
     * @column 用户配置好的列
     */
    saveColumnList: function (tableName, columnList) {
        return new Promise((resolve) => {
            setTimeout(() => {
                // 这里为了演示使用了 session 和 setTimeout 演示，开发时应用数据请求
                storage.session.set(tableName, columnList);
                resolve(true);
            }, 1000);
        });
    },

    /**
     * 获取自定义列
     * @tableName jcxTable组件的props->tableName
     * @column 组件接受到的props->column
     */
    getColumnList: function (tableName, columns) {
        return new Promise((resolve) => {
            // 这里为了演示使用了 session 和 setTimeout 演示，开发时应用数据请求
            const columnList = storage.session.get(tableName);
            if (columnList) {
                resolve(columnList);
            } else {
                resolve(columns);
            }
        });
    },

    /**
     * 重置自定义列
     * @tableName jcxTable组件的props->tableName
     * @column 组件接受到的props->column
     */
    resetColumnList: function (tableName, columnList) {
        return new Promise((resolve) => {
            // 这里为了演示使用了 session 和 setTimeout 演示，开发时应用数据请求
            setTimeout(() => {
                storage.session.remove(tableName);
                resolve(columnList);
            }, 1000);
        });
    }
}
